﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using University.Workshop.Business;
using University.Workshop.Model;

namespace University.Workshop.Presenters
{
    public class RegistrationSalePresenter
    {
        private ISale View;
        public RegistrationSalePresenter(ISale view){ View = view; }

        public string OnSaleRegistration()
        {
                if (string.IsNullOrEmpty(this.View.ClientCode) || string.IsNullOrEmpty(this.View.ClientCode) || string.IsNullOrEmpty(this.View.UserCode))
                    return "Falta llenar campos obligatorios!";

                if (this.View.TotalAmount == "0")
                    return "No hay ningun producto en la lista de venta!";

                Sale sale = new Sale();
                sale.Code = this.View.SaleCode;
                sale.UserCode = this.View.UserCode;
                sale.ClientCode = this.View.ClientCode;
                sale.DateSale = this.View.DateSale;
                sale.TotalAmount = this.View.TotalAmount;
                SaleController.SaleRegister(sale);
                for (int i = 0; i < this.View.ListOfProducts.Count; i++)
                {
                    SaleController.SaleDetailRegister(this.View.ListOfProducts[i]);
                }
                return "Registro de venta exitosa";
        }

        public string OnAddProductToList()
        {
                if (string.IsNullOrEmpty(this.View.CodeProduct))
                {
                    return "No puede añadir un producto vacio!";
                }
                if (string.IsNullOrEmpty(this.View.UnitPrice))
                {
                    return "Producto no tiene precio definido!";
                }

                if (string.IsNullOrEmpty(this.View.Quantity))
                {
                    return "No ingreso la cantidad del producto a venderse!";
                }

                if (Convert.ToDouble(this.View.Quantity, System.Globalization.CultureInfo.CurrentCulture) <= 0)
                {
                    return "No ingrese cantidades menores o iguales a cero!";
                }

                if (Convert.ToDouble(this.View.Quantity, System.Globalization.CultureInfo.CurrentCulture) > Convert.ToDouble(this.View.StockQuantity, System.Globalization.CultureInfo.CurrentCulture))
                {
                    return "Se paso del limite de la cantidad del producto que hay en almacen!";
                }

                if (Convert.ToDouble(this.View.StockQuantity, System.Globalization.CultureInfo.CurrentCulture) == 0)
                {
                    return "La cantidad en almacen es cero, por lo tanto no puede vender este producto!";
                }
                return "Todo esta bien";
        }
    }
}
